1.1Linux基础命令
1.1Linux基础命令
L1ulee1.1 Linux基础命令
一、什么是Linux命令
输入一串字符命令,由Shell将这条命令“翻译”为系统内核能够懂的“语言”,然后系统内核便根据这条命令去执行相关操作
什么是Shell?
Linux系统中运行的一种特殊程序
在用户和内核之间充当“翻译官”
- 用户登录Linux系统时,自动加载一个Shell程序
Bash是Linux系统中默认使用的Shell程序
文件位于/bin/bash目录下
graph TD User((用户)) -->Shell{Shell} Shell -->Kernel{内核} Kernel -->Hardware{硬件}
- 接收用户输入的指令
↓ - 解释命令
↓ - 传递给系统内核执行
二、命令提示符
1 | [root@localhost ~]# |
这是Linux系统的命令提示符,具体含义如下
- []:这是提示符的分隔符号,没有特殊含义,方便查看。
- root:显示当前登录的用户名。
- @:分隔符号,没有特殊含义。
- localhost:当前系统的简写主机名(通过hostname命令查看完整主机名)。
- ~:代表用户当前所在目录,此例中用户当前所在的目录是家(home)目录。
- #:命令提示符,Linux用这个符号标识登录的用户权限等级。超级用户提示符,普通用户提示符$。
什么是家(home)目录?
家目录又称主目录,用户登录后,要有一个初始登录位置,这个初始登录位置就称为用户的家目录。
- 超级用户的家目录:/root
- 普通用户的家目录:/home/用户名
- 用户在自己的家目录中拥有完整权限
三、Linux的常用命令
常用关机命令
1、poweroff
立刻关机 2、halt
立刻关机(需要root权限)
init命令
1、init 0:关机
2、init 3:纯文本模式
3、init 5:图形模式
4、init 6:重新启动
常用重启命令
reboot
立刻重启
拓展命令
Shutdown [选项] 时间
计划关机
选项 | 含义 |
---|---|
-c | 取消前一个关机命令 |
-h | 关机 |
-r | 重启 |
示例:
1 | [root@localhost ~]# shutdown -h now #立刻关机 |
切换路径命令
cd是Change Directory的缩写,用来切换工作目录。
基本格式如下:
[root@localhost ~]# cd [相对路径或绝对路径]
除此之外,cd命令后面可能跟一些特殊符号,表达含义如下:
特殊符号 | 作用 |
---|---|
~ | 代表当前登录用户的主目录 |
~ 用户名 | 表示切换至指定用户的主目录 |
- | 代表上次所在目录 |
. | 代表当前目录(不会有路径变化) |
.. | 代表上级目录 |
打印工作目录命令
pwd是Print Working Directory的缩写,用来在目录上显示当前目录的绝对路径。
基本格式如下:
[root@localhost ~]# pwd
显示目录内容命令
ls是list的缩写是最常见的目录操作命令,其主要功能是显示当前目录下的内容。
基本格式如下:
[root@localhost ~]# ls [选项] 目录名
具体选项有:-a、-A、-d、-f等。
常用命令:
1、ls -l
2、ls -lR
3、ls -lh
文件读写操作
新建文件夹命令
mkdir是make directories的缩写,用户创建新目录,此命令所有用户都可使用。
基本格式如下:
[root@localhost ~]# mkdir [选项] 目录名
具体选项有:
选项 | 含义 |
---|---|
-p | 递归创建所有目录 |
-m | 选项自定义目录权限 |
删除文件夹命令
rmdir是remove empty directories的缩写,命令用于删除空目录,此命令所有用户都可使用。
基本格式如下:
[root@localhost ~]# rmdir [选项] 目录名
具体选项有:
选项 | 含义 |
---|---|
-p | 递归删除所有空目录 |
因rmdir只能删除空目录,所以此命令不经常使用
新建文件命令
touch命令是用于用户创建新文件,并且此命令可以修改文件的时间参数(当文件存在时)。
Linux系统中,每个文件主要拥有3个时间参数(通过stat命令进行查看 ),分别是文件的访问时间、数据修改时间以及状态修改时间:
- 访问时间(Access Time,简称atime):只要文件的内容被读取,访问时间就会更新。
- 数据修改时间(Modify Time,简称mtime):当文件的内容数据发生改变,数据修改时间就会跟着相应改变。
- 状态修改时间(Change Time,简称ctime):当文件的状态发生变化,就会相应改变这个时间。
基本格式如下:
[root@localhost ~]# touch [选项] 文件名
具体选项有:
选项 | 含义 |
---|---|
-a | 只修改文件的访问时间 |
-c | 仅修改文件的时间参数(3个时间参数都改变),如果文件不存在,则不信建立文件 |
-d | 选项 含义 -a 只修改文件的访问时间 -c 仅修改文件的时间参数(3个时间参数都改变),如果文件不存在,则不信建立文件 -d -m -t |
-m | 只修改文件的数据修改时间 |
-t | 后面可跟欲修订时间,书写格式:YYMMDDhhmm |
删除命令
rm命令是remove的缩写,用于用户永久性的删除文件或者目录,在使用rm命令删除文件或目录时,系统不会产生任何提示信息。
基本格式如下:
[root@localhost ~]# rm [选项] 文件或目录
具体选项有:
选项 | 含义 |
---|---|
-f | 强制删除,和-i选项相反,使用-f系统不再询问,直接删除目标 |
-i | 在删除文件或者目录前,系统会给出提示信息,防止用户误删 |
-r | 递归删除,主要用户删除目录,可删除指定目录及包含所有内容,包括子目录和文件 |
注意:rm命令是一个具有破坏性的命令,因为rm命令会永久性的删除文件或目录,这就意味着,如果没有对文件或目录进行备份,一旦使用rm命令将其删除,将无法恢复,除非依赖第三方的数据恢复工具。
复制命令
cp命令是copy的缩写,用于文件或目录的拷贝。
基本格式如下:
[root@localhost ~]# cp [选项] 源文件 目标文件
具体格式如下:
选项 | 含义 |
---|---|
-a | 相当于-d、-p、-r选项的集合 |
-d | 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软连接 |
-i | 询问,如果目标文件已经存在,则会询问是否覆盖 |
-l | 把目标文件建立为源文件的硬链接文件,而不是复制源文件 |
-s | 把目标文件建立为源文件的软链接文件,而不是复制源文件 |
-p | 复制后的目标文件保留源文件的属性(包括所有者、所属组、权限和时间) |
-r | 递归复制,用于复制目录 |
-u | 若目标文件比源文件有差异,则使用该选项可以更新目标文件,此选项可用于对文件的升级和备份 |
移动命令
mv命令是move的缩写,用于目录或文件的移动,在移动中可以对文件或者目录进行重命名。
基本格式如下:
[root@localhost ~]# mv [选项] 源文件 目标文件
具体选项有:
选项 | 含义 |
---|---|
-f | 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖 |
-i | 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项) |
-n | 如果目标文件已经存在,则不会覆盖移动,而且不询问用户 |
-v | 显示文件或目录的移动过程 |
-u | 若目标文件已经存在,但两者相比,源文件更新,则会对目标文件进行升级 |
注意:同rm命令相似,mv命令也是一个具有破坏性的命令,如果使用不当,很可能给系统带来灾难性的后果。
显示文件内容命令
cat是concatenate(链接、连续)的简写,用来显示文本文件的内容(类似于DOS下的type命令),也可以把几个文件内容附加到另一个文件中,即连接合并文件。
基本格式如下:
1 | [root@localhost ~]# mv [选项] 文件名 |
具体选项有:
选项 | 含义 |
---|---|
-a | 相当于-vET选项的整合,用于列出所有隐藏符号 |
-E | 列出每行结尾的回车符$ |
-n | 对输出的所有行进行编号 |
-b | 同-n不同,此选项表示只对非空行进行编号 |
-T | 把Tab键^I显示出来 |
-V | 列出特殊字符 |
-s | 当遇到有连续2行以上的空白行时,就替换为1行的空白行 |
注意:cat命令适合查看不太大的文件。当然,在Linux中是可以使用其他的命令或方法来查看大文件的。
more命令是可以分页显示文本文件的内容,使用者可以逐页阅读文件中内容。
基本格式如下:
[root@localhost ~]# more [选项] 文件名
选项 | 含义 |
---|---|
-f | 计算行数时,以实际的行数,而不是自动换行过后的字数 |
-p | 不以卷动的方式显示每一页,而是先清除屏幕后再显示内容 |
-c | 跟-p选项相似,不同的是先显示内容再清除其他旧资料 |
-s | 跟-p选项相似,不同的是先显示内容再清除其他旧资料 |
-u | 不显示下引号(根据环境变量TERM指定的终端而有所不同) |
+n | 从第n行开始显示文件内容,n代表数字 |
More命令交互指令集功能表
交互指令 | 功能 |
---|---|
h或? | 显示more命令交互命令帮助 |
q或Q | 退出more |
v | 在当前行启动一个编辑器 |
:f | 显示当前文件的文件名和行号 |
!<命令>或:!<命令> | 在子Shell中执行指定命令 |
回车键 | 向下移动一行 |
空格键 | 向下移动一页 |
Ctrl+l | 刷新屏幕 |
= | 显示当前行的行号 |
‘ | 转到上一次搜索开始的地方 |
Ctrl+f | 向下滚动一页 |
. | 重复上次输入的命令 |
/字符串 | 搜索指定的字符串 |
d | 向下移动半页 |
b | 向上移动一页 |
head命令是显示指定文件前若干行的文件内容。
具体格式如下:
[root@localhost ~]#head [选项] 文件名
选项 | 含义 |
---|---|
-n K | 这里的K表示行数,该选项用来显示文件前K行的内容;如果使用”-K”作为参数,则表示除了文件最后K行外,显示剩余的全部内容 |
-c K | 这里的K表示字节数,该选项用来显示文件前K个字节的内容;如果使用”-K”,则表示除了文件最后K字节的内容,显示剩余全部内容 |
-v | 显示文件名 |
注意:如不设置显示的具体行数,则默认显示10行的文本数据。
tail命令正好和head相反,它用来查看文件末尾的数据。
基本格式如下:
[root@localhost ~]#tail [选项] 文件名
选项 | 含义 |
---|---|
-n K | 这里的K指的是行数,该选项表示输出最后K行,在此基础上,如果使用-n+K,则表示从文件的第K行开始输出 |
-c K | 这里的K指的是字节数,该选项表示输出最后K字节的内容,在此基础上,使用-c+K则表示从文件的第K个字节开始输出 |
-f | 输出文件变化后新增加的数据 |
注意:-f命令会显示文件的最后10行内容,而且光标不会退出命令,每隔一秒会检查一下文件是否增加新的内容,如果增加就追加到原来的输出结果后面并显示。
文件查找命令
find命令是在目录结构中搜索文件,并执行指定的操作。find命令提供相当多的查找条件,功能很强大。即使系统中含有网络文件系统,find命令在该文件系统中同样有效。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间。
基本格式如下:
[root@localhost ~]#find [路径] [选项] [输出格式]
路径 | 含义 |
---|---|
~ | 表示$HOME目录 |
. | 表示当前目录 |
/ | 表示根目录 |
选项 | 含义 |
---|---|
-name | 按照名字查找 |
-perm | 安装权限查找 |
-prune | 不在当前指定的目录下查找 |
-user | 文件(所)属主来查找 |
-group | 文件所在(所)属组来查找 |
-nogroup | 查找无有效所属组的文件 |
-nouser | 查找无有效所属主的文件 |
-type | 按照文件类型查找 |
输出格式 | 含义 |
---|---|
表示将结果输出到标准输出 | |
exec | 对匹配的文件执行该参数所给出的shell命令。形式为command{} \\\\; 注意:{}和;之间有空格 |
ok | 与exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执行 |
内容查找命令
grep命令时global regular expressions print的缩写,grep命令是用来在每一个文件或中(或特定输出上)搜索特定的模式,当使用grep时,包含指定字符模式的每一行内容,都会被打印(显示)到屏幕上,但是使用grep命令并不改变文件中的内容。
基本格式如下:
[root@localhost ~]#grep [选项] [模式] 文件名
注意:基本格式中的模式要么是字符(串),要么是正则表达式。
选项 | 含义 |
---|---|
-c | 仅列出文件中包含模式的行数 |
-i | 忽略模式中的字母大小写 |
-l | 列出带有匹配行的文件名 |
-n | 在每一行的最前面列出行号 |
-v | 列出没有匹配模式的行 |
-w | 把表达式当做一个完整的单字符来搜寻,忽略那些部分匹配的行 |
注意:如果是搜索多个文件,grep命令的搜索结果只显示文件中发现匹配模式的文件名;而如果搜索单个文件,grep命令的结果将显示每一个包含匹配模式的行。
四、Linux命令行的辅助操作
快捷键:
Tab键:自动补齐
Ctrl+U:清空至行首
Ctrl+K:清空至行尾
Ctrl+L:清屏
Ctrl+C:中断命令执行
Ctrl+Z:后台挂起
Ctrl+D:退出Shell
五、Linux中打包和压缩
打包和压缩有什么区别:
- 归档: 也称为打包,指的是一个文件或目录的集合,而这个集合被储存在一个文件中。归档文件没有经过压缩,因此,它占用的空间是其中所有文件和目录的总和。
- 压缩: 是指利用算法将文件进行处理,已达到保留最大文件信息,而让文件体积变小的目的。其基本原理为,通过查找文件内的重复字节,建立一个相同字节的词典文件,并用一个代码表示。比如说,在压缩文件中,有不止一处出现了”Linux常用命令”,那么,在压缩文件时,这个词就会用一个代码表示并写入词典文件,这样就可以实现缩小文件体积的目的。
打包命令
tar命令是常用的归档(打包)命令,该命令可以将许多文件一起保存到一个单独的归档文件。不仅如此,该命令还可以从归档文件中还原所需文件,也就是打包的反过程,称为解(压)打包。使用tar命令归档的包通常称为tar包,tar包文件都是以”.tar”结尾。
基本格式如下:
[root@localhost ~]#tar [选项] 源文件或目录
[root@localhost ~]#tar [选项] 源文件或目录(打包)/压缩包(解压包)
选项 | 含义 |
---|---|
-c | 将多个文件或目录进行打包 |
-A | 追加tar文件到归档文件 |
-f 包名 | 指定包的文件名或者指定解压的tar包的包名。包的拓展名是用来给管理员识别格式的,所以一定要正确指定拓展名。 |
-v | 显示打包或解压包的具体过程 |
-x | 对tar包做解压包操作 |
-t | 只查看tar包中有哪些文件或目录,不对tar包做解压包操作 |
-C 目录 | 指定解压包位置 |
压缩命令
zip命令是常用的压缩命令。
基本格式如下:
[root@localhost ~]#zip [选项] 源文件或源目标列表
注意:zip压缩命令需要手工指定压缩之后的压缩包名,注意写清楚拓展名,以便解压缩时使用。
选项 | 含义 |
---|---|
-r | 递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩 |
-m | 将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中 |
-v | 显示详细的压缩过程信息 |
-q | 在压缩的时候不显示命令的执行过程 |
-压缩级别 | 压缩级别是从1~9的数字,-1代表压缩速度更快,-9代表压缩效果更好 |
-u | 更新压缩文件,即往压缩文件中添加新文件 |
解压缩命令
unzip命令可以查看和解压缩zip文件。
基本格式如下:
[root@localhost ~]#unzip [选项] 压缩包名
选项 | 含义 |
---|---|
-d 目录名 | 将压缩文件解压到指定目录下 |
-n | 解压时并不覆盖已经存在的文件 |
-o | 解压时覆盖已经存在的文件,并且无需用户确认 |
-v | 查看压缩文件的详细信息,包括压缩文件中包含的文件大小、文件名以及压缩比等,但并不做解压操作 |
-t | 测试压缩文件有无损坏,但并不解压 |
-x 文件列表 | 解压文件,但不包含文件列表中指定的文件 |
六、Vi/Vim编辑器的使用
Vim编辑器的安装
在Linux系统中安装Vim编辑器
[root@localhost ~]#yum install vim
需要注意的是,此命令运行时,有时需要手动确认[y/n],如果需要省略手动输入”y”过程,可以用以下参数:
[root@localhost ~]#yum -y install vim
当安装完成,我们输入以下命令即可启动Vim文本编辑器
[root@localhost ~]#vim
命令模式
进入Vi/Vim便进入了命令模式。此状态下敲击键盘会被VIM识别为命令,而非输入字符。
以下是常用的几个命令:
命令/按键 | 作用 |
---|---|
I | 切换到输入模式,以输入字符 |
x | 删除当前光标所在处的字符 |
: | 切换到底线命令模式,以在最后一行输入命令 |
输入模式
在命令模式下按下i就进入输入模式。在输入模式中,可以使用以下按键:
按键 | 作用 |
---|---|
字符按键及Shift组合 | 输入字符 |
ENTER | 回车键,换行 |
BACKSPACE | 退格键,删除光标前一个字符 |
DEL | 删除键,删除光标后一个字符 |
方向键 | 在文本中移动光标 |
HOME/END | 移动光标到行首/行尾 |
Page Up/Page Down | 上/下翻页 |
Insert | 切换光标为输入/替换模式 |
ESC | 退出输入模式,切换到命令模式 |
底线命令模式
在命令模式下按:(英文冒号)就进入了底线命令模式。底线命令模式可以输入单个或多个字符命令。在底线模式中,基本命令有:
命令 | 作用 |
---|---|
q | 退出程序 |
w | 保存文件 |
ESC(按键) | 退出底线命令模式,切换到命令模式 |
如果想用Vim建立一个文件名为01.txt的文件,可以使用:
[root@localhost ~]#vim 01.txt
一般模式光标移动常用方法
按键 | 作用 |
---|---|
[Ctrl]+[F] | 屏幕『向下』移动一页,相当于[Page Down]按键(常用) |
[Ctrl]+[B] | 屏幕『向上』移动一页,相当于[Page Up]按键(常用) |
0或者功能键[Home] | 数字『0』:移动到这一行的最前面字符处(常用) |
$或者功能键[End] | 移动到这一行的最后面字符处(常用) |
G | 移动到这个档案的最后一行(常用) |
gg | 移动到这个档案的第一行(常用) |
n |
n为数字。光标向下移动n行(常用) |
一般模式下搜索替换指令说明
搜索替换命令 | 作用 |
---|---|
/word | 向光标之下寻找一个名称为word的字符串(常用) |
?word | 向光标之上寻找一个名称为word的字符串 |
n | 这个n是英文按键。代表重复前一个搜寻的动作 |
N | 这个N是英文按键。与n刚好相反,为『反向』进行前一个搜寻的动作 |
:n1,n2s/word1/word2/g | n1与n2为数字。在第n1与n2行之间寻找word1这个字符串,并将该字符串取代为word2(常用) |
:1,$s/word1/word2/g或:%s/word1/word2/g | 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2(常用) |
:1,$s/word1/word2/gc或:%s/word1/word2/gc | 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2,且在取代前显示提示字符给用户确认(Confirm)是否需要取代(常用) |
一般模式下删除、复制与粘贴的常用方法
删除、复制与粘贴方法 | 作用 |
---|---|
x,X | 在一行字当中,x为向后删除一个字符(相当于[del]按键),X为向前删除一个字符(相当于[Backspace]亦即是退格键)(常用) |
dd | 删除光标所在的那一整行(常用) |
ndd | n为数字。删除光标所在的向下n行,例如20dd则是删除 20行(常用) |
yy | 复制光标所在的那一行(常用) |
nyy | n为数字。复制光标所在向下n行,例如20yy则是复制20行(常用) |
p, P | p为将已复制的数据在光标下一行粘贴上,P则为粘贴在光标上一行 |
u | 复原前一个动作(常用) |
[Ctrl]+r | 重做上一个动作(常用) |
. | 小数点,意思是重复前一个动作的意思。如果你想要重复删除、重复粘贴等等动作,按下小数点『.』就好了(常用) |
一般模式切换到编辑模式的方法说明
进入输入和取代模式方法 | 作用 |
---|---|
i,I | 进入输入模式(Insert mode):i为『从目前光标所在处输入』,I为『在目前所在行的第一个非空格符处开始输入』(常用) |
a,A | 进入输入模式(Insert mode):a为『从目前光标所在的下一个字符处开始输入』,A为『从光标所在行的最后一个字符处开始输入』(常用) |
o,O | 进入输入模式(Insert mode):这是英文字母o的大小写。o为『在目前光标所在的下一行处输入新的一行』,O为『在目前光标所在处的上一行输入新的一行』(常用) |
r,R | 进入取代模式(Replace mode):r只会取代光标所在的那一个字符一次,R会一直取代光标所在的文字,直到按下ESC为止(常用) |
[ESC] | 退出编辑模式,回到一般模式中(常用) |
一般模式切换到命令行模式的指令说明及Vim环境变量变更指令说明
命令行存储、离开指令 | 作用 |
---|---|
:w | 将编辑的数据写入硬盘存档中(常用) |
:w! | 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入成功,还是跟你对该档案的档案权限有关 |
:q | 离开vi(常用) |
:q! | 若曾修改过档案,又不想储存,使用!为强制离开不储存档案 |
:wq | 储存后离开,若为:wq!则为强制储存后离开(常用) |
:n1,n2 w [filename] | 将n1到n2的内容储存称filename这个档案 |
:!command | 暂时离开vi到命令行模式下执行command的显示结果 |
Vim环境的变更 | 作用 |
:set nu | 显示行号,设定之后,会在每一行的前缀显示该行的行号 |
:set nonu | 与set nu相反,为取消行号 |